From 851a68883cae3bbb63484c6a023a183eeedbea50 Mon Sep 17 00:00:00 2001 From: sater Date: Thu, 27 Mar 1986 15:49:16 +0000 Subject: [PATCH] repaired inreg() pseudofunction, it delivered total nonsense --- mach/proto/ncg/compute.c | 3 +-- mach/proto/ncg/regvar.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/mach/proto/ncg/compute.c b/mach/proto/ncg/compute.c index 4682fb71a..0de478fa4 100644 --- a/mach/proto/ncg/compute.c +++ b/mach/proto/ncg/compute.c @@ -346,8 +346,7 @@ result_t compute(node) register node_p node; { #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); diff --git a/mach/proto/ncg/regvar.c b/mach/proto/ncg/regvar.c index 9805d0ec6..c0f48d5ad 100644 --- a/mach/proto/ncg/regvar.c +++ b/mach/proto/ncg/regvar.c @@ -111,6 +111,7 @@ fixregvars(saveall) { } 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); } @@ -127,6 +128,15 @@ isregvar(off) long off; { 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; -- 2.34.1