Line 332... |
Line 332... |
f->bb[i].insn[j] = insn[f->bb[i].first + j - (MAX_REGS - 1)];
|
f->bb[i].insn[j] = insn[f->bb[i].first + j - (MAX_REGS - 1)];
|
for (k = 0; k < MAX_OPERANDS; k++)
|
for (k = 0; k < MAX_OPERANDS; k++)
|
if (f->bb[i].insn[j].opt[k] & OPT_REF) {
|
if (f->bb[i].insn[j].opt[k] & OPT_REF) {
|
int b1;
|
int b1;
|
for (b1 = 0; b1 < i; b1++)
|
for (b1 = 0; b1 < i; b1++)
|
if (f->bb[b1].first <= f->bb[i].insn[j].op[k]
|
if (f->bb[b1].first <= (signed) f->bb[i].insn[j].op[k]
|
&& f->bb[i].insn[j].op[k] <= f->bb[b1].last) break;
|
&& (signed)f->bb[i].insn[j].op[k] <= f->bb[b1].last) break;
|
assert (b1 < f->num_bb);
|
assert (b1 < f->num_bb);
|
f->bb[i].insn[j].op[k] = REF (b1, f->bb[i].insn[j].op[k] - f->bb[b1].first + MAX_REGS - 1);
|
f->bb[i].insn[j].op[k] = REF (b1, f->bb[i].insn[j].op[k] - f->bb[b1].first + MAX_REGS - 1);
|
}
|
}
|
if (f->bb[i].insn[j].type & IT_MEMORY) f->bb[i].nmemory++;
|
if (f->bb[i].insn[j].type & IT_MEMORY) f->bb[i].nmemory++;
|
}
|
}
|
Line 347... |
Line 347... |
for (i = 0; i < f->num_bb; i++)
|
for (i = 0; i < f->num_bb; i++)
|
for (j = 0; j < f->bb[i].ninsn; j++)
|
for (j = 0; j < f->bb[i].ninsn; j++)
|
for (k = 0; k < MAX_OPERANDS; k++)
|
for (k = 0; k < MAX_OPERANDS; k++)
|
if (f->bb[i].insn[j].opt[k] & OPT_REF) {
|
if (f->bb[i].insn[j].opt[k] & OPT_REF) {
|
int t = f->bb[i].insn[j].op[k];
|
int t = f->bb[i].insn[j].op[k];
|
assert (REF_I (t) < f->bb[REF_BB(t)].ninsn);
|
if (REF_I (t) >= f->bb[REF_BB(t)].ninsn) {
|
|
printf ("Anomaly detected at %x.%x[%i]\n", i, j, k);
|
|
print_cuc_bb (f, "ANOMALY");
|
|
exit (1);
|
|
}
|
}
|
}
|
}
|
}
|
|
|
/* type == 0; keep predecessor condition
|
/* type == 0; keep predecessor condition
|
* type == 1; keep successor condition
|
* type == 1; keep successor condition
|