#ifdef REGVARS
case EX_INREG:
assert(leaf1.e_typ == EV_INT);
- if ((result.e_v.e_con = isregvar((long) leaf1.e_v.e_con))>0)
- result.e_v.e_con = machregs[result.e_v.e_con].r_size;
+ result.e_v.e_con = isregtyp((long) leaf1.e_v.e_con);
return(result);
case EX_REGVAR:
assert(leaf1.e_typ == EV_INT);
} else if(regassigned[rvtyp][i].ra_score>0) {
rv=regassigned[rvtyp][i].ra_rv;
rv->rv_reg=rvnumbers[rvtyp][i];
+ rv->rv_type = rvtyp;
regsave(codestrings[machregs[rv->rv_reg].r_repr],
rv->rv_off,rv->rv_size);
}
return(-1);
}
+isregtyp(off) long off; {
+ register struct regvar *rvlp;
+
+ for(rvlp=rvlist;rvlp!=0;rvlp=rvlp->rv_next)
+ if(rvlp->rv_off == off)
+ return(rvlp->rv_reg ? rvlp->rv_type+1 : 0);
+ return(-1);
+}
+
unlinkregs() {
register struct regvar *rvlp,*t;
register struct regassigned *ra;