summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisc/isel.c7
1 files changed, 3 insertions, 4 deletions
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]);