|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.