repaired inreg() pseudofunction, it delivered total nonsense
This commit is contained in:
parent
5bdb108e47
commit
851a68883c
2 changed files with 11 additions and 2 deletions
|
@ -346,8 +346,7 @@ result_t compute(node) register node_p node; {
|
||||||
#ifdef REGVARS
|
#ifdef REGVARS
|
||||||
case EX_INREG:
|
case EX_INREG:
|
||||||
assert(leaf1.e_typ == EV_INT);
|
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 = isregtyp((long) leaf1.e_v.e_con);
|
||||||
result.e_v.e_con = machregs[result.e_v.e_con].r_size;
|
|
||||||
return(result);
|
return(result);
|
||||||
case EX_REGVAR:
|
case EX_REGVAR:
|
||||||
assert(leaf1.e_typ == EV_INT);
|
assert(leaf1.e_typ == EV_INT);
|
||||||
|
|
|
@ -111,6 +111,7 @@ fixregvars(saveall) {
|
||||||
} else if(regassigned[rvtyp][i].ra_score>0) {
|
} else if(regassigned[rvtyp][i].ra_score>0) {
|
||||||
rv=regassigned[rvtyp][i].ra_rv;
|
rv=regassigned[rvtyp][i].ra_rv;
|
||||||
rv->rv_reg=rvnumbers[rvtyp][i];
|
rv->rv_reg=rvnumbers[rvtyp][i];
|
||||||
|
rv->rv_type = rvtyp;
|
||||||
regsave(codestrings[machregs[rv->rv_reg].r_repr],
|
regsave(codestrings[machregs[rv->rv_reg].r_repr],
|
||||||
rv->rv_off,rv->rv_size);
|
rv->rv_off,rv->rv_size);
|
||||||
}
|
}
|
||||||
|
@ -127,6 +128,15 @@ isregvar(off) long off; {
|
||||||
return(-1);
|
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() {
|
unlinkregs() {
|
||||||
register struct regvar *rvlp,*t;
|
register struct regvar *rvlp,*t;
|
||||||
register struct regassigned *ra;
|
register struct regassigned *ra;
|
||||||
|
|
Loading…
Reference in a new issue