outregs() {
register i,j,k;
short rset[SZOFSET(MAXREGS)];
+ short clashlist[MAXREGS*MAXREGS];
+ int iclashlist = 0;
int t,ready;
fprintf(ctable,"},{");
for (j=0;j<SZOFSET(nregs);j++)
fprintf(ctable,"0%o,",rset[j]&0xFFFF);
- fprintf(ctable,"}");
+ fprintf(ctable,"}, %d", iclashlist);
+ for (j = 1; j < nregs; j++) {
+ if (BIT(rset, j)) clashlist[iclashlist++] = j;
+ }
+ clashlist[iclashlist++] = 0;
}
fprintf(ctable,",%d",l_regs[i].ri_rregvar>=0);
fprintf(ctable,"},\n");
}
- fprintf(ctable,"};\n\n");
+ fprintf(ctable,"};\n\n short clashlist[] = {\n\t");
+ for (i = 0; i < iclashlist; i++) {
+ fprintf(ctable, "%d, ", clashlist[i]);
+ if (clashlist[i] == 0) fprintf(ctable, "\n\t");
+ }
+ fprintf(ctable, "0};\n\n");
}
outregvars() {