Annotation of researchv9/jerq/sgs/optim/peep.c, revision 1.1

1.1     ! root        1: /* @(#) peep.c: 1.2 3/3/84                             */
        !             2: /* peep.c
        !             3: **
        !             4: **     3B20S peephole improvement driver
        !             5: **
        !             6: **
        !             7: ** This module contains the driver for the 3B peephole improver.
        !             8: */
        !             9: 
        !            10: 
        !            11: 
        !            12: 
        !            13: #include "optim.h"
        !            14: 
        !            15: extern void w1opt();
        !            16: extern void w2opt();
        !            17: extern void w3opt();
        !            18: extern int window();
        !            19: 
        !            20: extern int dflag;                      /* non-0 to display live/dead data */
        !            21: extern int hflag;                      /* non-0 to disable peephole entirely */
        !            22: void peep()
        !            23: {
        !            24:     void prld();                       /* routine to print live/dead data */
        !            25: 
        !            26: 
        !            27:     if (hflag == 0)
        !            28:     {
        !            29: #ifdef LIVEDEAD
        !            30:        if (dflag != 0)                 /* if enabled */
        !            31:            prld();                     /* print the world's live/dead data */
        !            32: #endif
        !            33: 
        !            34:        window(2, w2opt);               /* do 2-instruction first to merge
        !            35:                                        ** triadics
        !            36:                                        */
        !            37:        window(3, w3opt);               /* ... to discard extra compares */
        !            38:        window(1, w1opt);               /* do 1-instruction next to kill dead
        !            39:                                        ** code, split triadics again (!)
        !            40:                                        */
        !            41: 
        !            42:        window(2, w2opt);               /* now repeat to clean up stragglers */
        !            43:        window(1, w1opt);
        !            44:     }
        !            45:     return;
        !            46: }
        !            47: /* Print live/dead data for all instruction nodes */
        !            48: 
        !            49: #ifdef LIVEDEAD
        !            50: 
        !            51: 
        !            52: void
        !            53: prld()
        !            54: {
        !            55:     register NODE * p;
        !            56:     int prinst();
        !            57: 
        !            58:     for (ALLN(p))                      /* for all instruction nodes... */
        !            59:     {
        !            60:        PUTCHAR(CC);                    /* write comment char */
        !            61: 
        !            62:        PRINTF("(live: 0x%X)", p->nlive); /* print live/dead data */
        !            63:        (void) prinst(p);                       /* print instruction */
        !            64:     }
        !            65:     return;
        !            66: }
        !            67: 
        !            68: #endif

unix.superglobalmegacorp.com

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