fix: also kill condition codes if they are set to a register that is to be killed

This commit is contained in:
ceriel 1990-09-03 11:12:44 +00:00
parent 67f0419dc3
commit 2f83a7e3d9

View file

@ -498,7 +498,16 @@ normalfailed: if (stackpad!=tokpatlen) {
if (result.e_typ!=EV_REG) if (result.e_typ!=EV_REG)
break; break;
if ( in_stack(result.e_v.e_reg) ) BROKE() ; /* Check aside-stack */ if ( in_stack(result.e_v.e_reg) ) BROKE() ; /* Check aside-stack */
if (dokill) machregs[result.e_v.e_reg].r_contents.t_token = 0; if (dokill) {
/* kill register, and kill condition codes if they are set to
this register
*/
machregs[result.e_v.e_reg].r_contents.t_token = 0;
if (machregs[0].r_contents.t_token == -1 &&
machregs[0].r_contents.t_att[0].ar == result.e_v.e_reg) {
machregs[0].r_contents.t_token = 0;
}
}
for (tp= &fakestack[stackheight-tokpatlen-1];tp>=&fakestack[0];tp--) for (tp= &fakestack[stackheight-tokpatlen-1];tp>=&fakestack[0];tp--)
if (tp->t_token==-1) { if (tp->t_token==-1) {
if(tp->t_att[0].ar==result.e_v.e_reg) if(tp->t_att[0].ar==result.e_v.e_reg)