Print useful diagnostics if reg-alloc bombs due to bogus live ranges

in the input code.


git-svn-id: svn://svn.valgrind.org/vex/trunk@877
This commit is contained in:
Julian Seward
2005-02-09 19:13:29 +00:00
parent db1e84af44
commit ea1f136cd7

View File

@@ -492,15 +492,29 @@ HInstrArray* doRegisterAllocation (
rreg_dead_before[k] = ii+1;
break;
case HRmRead:
if (rreg_live_after[k] == INVALID_INSTRNO)
if (rreg_live_after[k] == INVALID_INSTRNO) {
vex_printf("\nOFFENDING RREG = ");
(*ppReg)(available_real_regs[k]);
vex_printf("\n");
vex_printf("\nOFFENDING instr = ");
(*ppInstr)(instrs_in->arr[ii]);
vex_printf("\n");
vpanic("doRegisterAllocation: "
"first event for rreg is Read");
}
rreg_dead_before[k] = ii+1;
break;
case HRmModify:
if (rreg_live_after[k] == INVALID_INSTRNO)
if (rreg_live_after[k] == INVALID_INSTRNO) {
vex_printf("\nOFFENDING RREG = ");
(*ppReg)(available_real_regs[k]);
vex_printf("\n");
vex_printf("\nOFFENDING instr = ");
(*ppInstr)(instrs_in->arr[ii]);
vex_printf("\n");
vpanic("doRegisterAllocation: "
"first event for rreg is Modify");
}
rreg_dead_before[k] = ii+1;
break;
default: