Annotation of researchv9/jerq/sgs/optim/optutil.h, revision 1.1.1.1

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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.