From 226bbb5b71174bf997c7ac91df73bcffa5b9c46d Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Tue, 21 Jul 2015 05:50:45 -0400 Subject: fix some instruction emitting code --- lisc/isel.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'lisc') diff --git a/lisc/isel.c b/lisc/isel.c index eff8d93..60cc2d5 100644 --- a/lisc/isel.c +++ b/lisc/isel.c @@ -26,7 +26,7 @@ emit(short op, Ref to, Ref arg0, Ref arg1) { if (curi == insb) diag("isel: too many instructions"); - *curi-- = (Ins){op, to, {arg0, arg1}}; + *--curi = (Ins){op, to, {arg0, arg1}}; } static void @@ -84,12 +84,11 @@ isel(Fn *fn) t0 = fn->ntmp; for (b=fn->start; b; b=b->link) { - curi = &insb[NIns-1]; + curi = &insb[NIns]; for (i=&b->ins[b->nins]; i!=b->ins;) { sel(--i, fn); } - nins = &insb[NIns-1] - curi; - curi++; + nins = &insb[NIns] - curi; free(b->ins); b->ins = alloc(nins * sizeof b->ins[0]); memcpy(b->ins, curi, nins * sizeof b->ins[0]); -- cgit 1.4.1