Annotation of researchv8dc/cmd/ccom/common/t2print.c, revision 1.1

1.1     ! root        1: # include "mfile2.h"
        !             2: 
        !             3: char *cnames[] = 
        !             4: {
        !             5:        "CEFF",
        !             6:        "NRGS",
        !             7:        "CCC",
        !             8:        0,
        !             9: };
        !            10: 
        !            11: prgoal( goal ) 
        !            12: register goal;
        !            13: {
        !            14:        /* print a nice-looking description of goal */
        !            15: 
        !            16:        register i, flag;
        !            17: 
        !            18:        flag = 0;
        !            19:        for( i=0; cnames[i]; ++i )
        !            20:        {
        !            21:                if( goal & (1<<i) )
        !            22:                {
        !            23:                        if( flag ) printf( "|" );
        !            24:                        ++flag;
        !            25:                        printf( cnames[i] );
        !            26:                }
        !            27:        }
        !            28:        if( !flag ) printf( "?%o", goal );
        !            29: 
        !            30: }
        !            31: 
        !            32: #ifndef NODBG
        !            33: e2print( p )
        !            34: register NODE *p; 
        !            35: {
        !            36:        printf( "\n********* costs=(0,...,NRGS;EFF;TEMP;CC)\n" );
        !            37:        e22print( p ,"T");
        !            38:        printf("=========\n");
        !            39: }
        !            40: 
        !            41: e22print( p ,s)
        !            42: register NODE *p; 
        !            43: char *s;
        !            44: {
        !            45:        static down=0;
        !            46:        register ty;
        !            47: 
        !            48:        ty = optype( p->tn.op );
        !            49:        if( ty == BITYPE )
        !            50:        {
        !            51:                ++down;
        !            52:                e22print( p->in.right ,"R");
        !            53:                --down;
        !            54:        }
        !            55:        e222print( down, p, s );
        !            56: 
        !            57:        if( ty != LTYPE )
        !            58:        {
        !            59:                ++down;
        !            60:                e22print( p->in.left, "L" );
        !            61:                --down;
        !            62:        }
        !            63: }
        !            64: 
        !            65: e222print( down, p, s )
        !            66: NODE *p; 
        !            67: char *s;
        !            68: {
        !            69:        /* print one node */
        !            70:        int i, d;
        !            71: 
        !            72:        for( d=down; d>1; d -= 2 ) printf( "\t" );
        !            73:        if( d ) printf( "    " );
        !            74: 
        !            75:        printf( "%s.%d) op= '%s'",s, (int)(p-node), opst[p->in.op] );
        !            76:        switch( p->in.op ) 
        !            77:        {
        !            78:                 /* special cases */
        !            79:        case REG:
        !            80:                printf( " %s", rnames[p->tn.rval] );
        !            81:                break;
        !            82: 
        !            83:        case ICON:
        !            84:        case NAME:
        !            85:        case VAUTO:
        !            86:        case VPARAM:
        !            87:        case TEMP:
        !            88:                printf( " " );
        !            89:                adrput( p );
        !            90:                break;
        !            91: 
        !            92:        case STCALL:
        !            93:        case UNARY STCALL:
        !            94:                printf( " args=%d", p->stn.argsize );
        !            95:        case STARG:
        !            96:        case STASG:
        !            97:                printf( " size=%d", p->stn.stsize );
        !            98:                printf( " align=%d", p->stn.stalign );
        !            99:                break;
        !           100: 
        !           101:        case GENBR:
        !           102:                printf( " %d (%s)", p->bn.label, opst[p->bn.lop] );
        !           103:                break;
        !           104: 
        !           105:        case CALL:
        !           106:        case UNARY CALL:
        !           107:                printf( " args=%d", p->stn.argsize );
        !           108:                break;
        !           109: 
        !           110:        case GENUBR:
        !           111:        case GENLAB:
        !           112:                printf( " %d", p->bn.label );
        !           113:                break;
        !           114: 
        !           115:        case FUNARG:
        !           116:                printf( " offset=%d", p->tn.rval );
        !           117: 
        !           118:        }
        !           119: 
        !           120:        printf( ", " );
        !           121:        t2print( p->in.type );
        !           122:        printf( ", c=[" );
        !           123:        for( i=0; i<NRGS; ++i ) cprt( p->in.cst[i], "," );
        !           124:        cprt( p->in.cst[NRGS], "; " );
        !           125:        cprt( p->in.cst[CEFF], "; " );
        !           126:        cprt( p->in.cst[CTEMP], "; " );
        !           127:        cprt( p->in.cst[CCC], "]" );
        !           128:        if( p->tn.goal == CEFF ) printf( " (EFF)\n" );
        !           129:        else if( p->tn.goal == CCC ) printf( " (CC)\n" );
        !           130:        else if( p->tn.goal != NRGS ) printf( "(BAD GOAL: %d)\n", p->tn.goal );
        !           131:        else printf( "\n" );
        !           132: }
        !           133: 
        !           134: t2print( t )
        !           135: TWORD t;
        !           136: {
        !           137:        int i;
        !           138:        static struct {
        !           139:                TWORD mask;
        !           140:                char * string;
        !           141:                } t2tab[] = {
        !           142:                        TANY, "ANY",
        !           143:                        TINT, "INT",
        !           144:                        TUNSIGNED, "UNSIGNED",
        !           145:                        TCHAR, "CHAR",
        !           146:                        TUCHAR, "UCHAR",
        !           147:                        TSHORT, "SHORT",
        !           148:                        TUSHORT, "USHORT",
        !           149:                        TLONG, "LONG",
        !           150:                        TULONG, "ULONG",
        !           151:                        TFLOAT, "FLOAT",
        !           152:                        TDOUBLE, "DOUBLE",
        !           153:                        TPOINT, "POINTER",
        !           154:                        TPOINT2, "POINTER2",
        !           155:                        TSTRUCT, "STRUCT",
        !           156:                        TVOID, "VOID",
        !           157:                        0, 0
        !           158:                        };
        !           159: 
        !           160:        for( i=0; t && t2tab[i].mask; ++i ) {
        !           161:                if( (t&t2tab[i].mask) == t2tab[i].mask ) {
        !           162:                        printf( " %s", t2tab[i].string );
        !           163:                        t ^= t2tab[i].mask;
        !           164:                        }
        !           165:                }
        !           166:        }
        !           167: 
        !           168: # else
        !           169: e2print( p )
        !           170: NODE *p; 
        !           171: {
        !           172:        werror( "e2print not compiled" );
        !           173: }
        !           174: e222print( p, s )
        !           175: NODE *p; 
        !           176: char *s;
        !           177: {
        !           178:        werror( "e222print not compiled" );
        !           179: }
        !           180: # endif
        !           181: cprt( c, s )
        !           182: register char *s; 
        !           183: register c;
        !           184: {
        !           185:        if( c >= INFINITY ) printf( "*%s", s );
        !           186:        else printf( "%d%s", c, s );
        !           187: }

unix.superglobalmegacorp.com

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