|
|
1.1 ! root 1: /* @(#) optutil.h: 1.3 3/27/84 */ ! 2: /* optutil.h ! 3: ** ! 4: ** Declarations for 3B optimizer utilities ! 5: ** ! 6: ** David Kristol, April, 1982 ! 7: **/ ! 8: ! 9: extern boolean isreg(); /* is operand a register? */ ! 10: extern boolean isnib(); /* is operand a nibble? */ ! 11: extern boolean isnegnib(); /* is operand a negative nibble? */ ! 12: extern int getbit(); /* get exponent if value is power of 2 */ ! 13: extern NODE * insert(); /* insert new instruction node */ ! 14: extern void chgop(); /* change op code */ ! 15: extern char * copyopn(); /* copy operand */ ! 16: extern boolean isdyadic(); /* is instruction dyadic? */ ! 17: extern boolean istriadic(); /* is instruction triadic? */ ! 18: extern boolean totriadic(); /* can dyadic be made triadic? */ ! 19: extern void makelive(); /* make register live */ ! 20: extern void makedead(); /* make register dead */ ! 21: extern boolean isindex(); /* operand is an index off a register */ ! 22: extern boolean ismove(); /* is instruction a move-type? */ ! 23: extern boolean iszoffset(); /* is operand 0 offset from register? */ ! 24: extern boolean isnumlit(); /* is operand a numeric literal: &[-]n? */ ! 25: extern void exchange(); /* exchange node and successor */ ! 26: extern boolean doindirect(); /* resolve indirect references in node */ ! 27: extern boolean usesvar(); /* does first operand use second? */ ! 28: extern boolean isiros(); /* is op either immed, reg, or on stack? */ ! 29: ! 30: extern void ldelin(); ! 31: extern void ldelin2(); /* routines to preserve */ ! 32: extern void lexchin(); ! 33: extern void lmrgin1(); /* line number info */ ! 34: extern void lmrgin2(); ! 35: extern void lmrgin3(); ! 36: ! 37: /* declare string and other functions that are always handy for optimizations */ ! 38: ! 39: extern int strcmp(); ! 40: extern char * strcpy(); ! 41: extern int strlen(); ! 42: extern char * strchr(); ! 43: extern long atol(); ! 44: ! 45: ! 46: /* declare functions defined in local.c that are handy here */ ! 47: ! 48: extern char * dst(); /* return pointer to destination string */ ! 49: extern int stype(); /* return implied type of op code */ ! 50: extern boolean samereg(); /* return true if same register */ ! 51: extern boolean usesreg(); /* usesreg(a,b) true if reg. b used in a */ ! 52: extern int setreg(); /* return bits corresponding to register */ ! 53: extern boolean isdead(); /* return true if reg. dead after node */ ! 54: extern void wchange(); /* flag a window change */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.