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