addrs.b[z] |= bit.b[z];
}
-// print("bit=%2d addr=%d et=%-6E w=%-2d s=%S + %lld\n",
-// i, v->addr, v->etype, v->width, v->sym, v->offset);
+ if(debug['R'] && debug['v'])
+ print("bit=%2d addr=%d et=%-6E w=%-2d s=%N + %lld\n",
+ i, v->addr, v->etype, v->width, v->node, v->offset);
}
+ if(debug['R'] && debug['v'])
+ dumpit("pass1", firstr);
+
/*
* pass 2
* turn branch references to pointers
print(" addr = %Q\n", addrs);
}
+ if(debug['R'] && debug['v'])
+ dumpit("pass2", firstr);
+
/*
* pass 2.5
* find looping structure
change = 0;
loopit(firstr, nr);
+ if(debug['R'] && debug['v'])
+ dumpit("pass2.5", firstr);
+
/*
* pass 3
* iterate propagating usage
if(change)
goto loop1;
+ if(debug['R'] && debug['v'])
+ dumpit("pass3", firstr);
+
/*
* pass 4
addsplits();
+ if(debug['R'] && debug['v'])
+ dumpit("pass4", firstr);
+
if(debug['R'] > 1) {
print("\nprop structure:\n");
for(r = firstr; r != R; r = r->link) {
r->act.b[0] &= ~REGBITS;
}
+ if(debug['R'] && debug['v'])
+ dumpit("pass4.5", firstr);
+
/*
* pass 5
* isolate regions
brk:
qsort(region, nregion, sizeof(region[0]), rcmp);
+ if(debug['R'] && debug['v'])
+ dumpit("pass5", firstr);
+
/*
* pass 6
* determine used registers (paint2)
paint3(rgp->enter, rgp->varno, vreg, rgp->regno);
rgp++;
}
+
+ if(debug['R'] && debug['v'])
+ dumpit("pass6", firstr);
+
/*
* pass 7
* peep-hole on basic block
peep();
}
+ if(debug['R'] && debug['v'])
+ dumpit("pass7", firstr);
+
/*
* last pass
* eliminate nops
et = a->etype;
o = a->offset;
w = a->width;
+ if(w < 0)
+ fatal("bad width %d for %D", w, a);
for(i=0; i<nvar; i++) {
v = var+i;
}
if(debug['R'] && debug['v'])
print("\n");
-
+
// pass 2: mark all reachable code alive
mark(firstp);
addrs.b[z] |= bit.b[z];
}
-// print("bit=%2d addr=%d et=%-6E w=%-2d s=%S + %lld\n",
-// i, v->addr, v->etype, v->width, v->sym, v->offset);
+ if(debug['R'] && debug['v'])
+ print("bit=%2d addr=%d et=%-6E w=%-2d s=%N + %lld\n",
+ i, v->addr, v->etype, v->width, v->node, v->offset);
}
if(debug['R'] && debug['v'])
et = a->etype;
o = a->offset;
w = a->width;
+ if(w < 0)
+ fatal("bad width %d for %D", w, a);
flag = 0;
for(i=0; i<nvar; i++) {
v->node = node;
if(debug['R'])
- print("bit=%2d et=%2E w=%d %#N %D\n", i, et, w, node, a);
+ print("bit=%2d et=%2d w=%d+%d %#N %D flag=%d\n", i, et, o, w, node, a, v->addr);
+
ostats.nvar++;
bit = blsh(i);
addrs.b[z] |= bit.b[z];
}
-// print("bit=%2d addr=%d et=%-6E w=%-2d s=%S + %lld\n",
-// i, v->addr, v->etype, v->width, v->sym, v->offset);
+ if(debug['R'] && debug['v'])
+ print("bit=%2d addr=%d et=%-6E w=%-2d s=%N + %lld\n",
+ i, v->addr, v->etype, v->width, v->node, v->offset);
}
if(debug['R'] && debug['v'])
et = a->etype;
o = a->offset;
w = a->width;
+ if(w < 0)
+ fatal("bad width %d for %D", w, a);
flag = 0;
for(i=0; i<nvar; i++) {