Annotation of researchv9/jerq/sgs/optim/optutil.h, revision 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.